\subsection{Les problèmes liés à la carte à puce}

Plusieurs problèmes, ayant retardé l'avancement du projet ont été rencontrés.
En effet, alors que nous cherchions à nous approprier le fonctionnement de l'environnement de développement de la BasicCard, nous nous aperçus que celui-ci nécessitait d'être développer sous Windows XP. Nous avons donc choisi d'utiliser une machine virtuelle (VirtualBox) sous XP. Par la suite, nous avons du déterminer le modèle de la carte à programmer. Dans ce cadre, il fallait d'une part nous assurer que les fonctions cryptographiques nécessaire étaient bien implémentées dans celle que nous utiliserons, d'autre part il s'agissait également de vérifier que les mêmes fonctions cryptographiques étaient implémentées dans la librairie JAVA (bouncycastle), afin de faire l'interface entre le terminal et le site de la banque. Les cartes fournis avec le lecteur n'offraient pas ces possibilités. C'est pourquoi nous avons émulé le modèle de carte compatible.\\

Après avoir résolu ces problèmes, nous avons alors implémenté un protocole simplifié par rapport à la norme EMV qui est actuellement en vigueur dans les transactions par les cartes bancaires.
Ainsi nous avons considéré trois entités dans cette transactions : la carte et par extension son détenteur, le terminal et la banque.
Nous avons également considéré que le client et le commerçant aient la même banque. Initialement nous avons prévu les échanges suivants : 
\begin{itemize}
\item Le TPE authentifié la carte et vérifie que l'utilisateur est bien son détenteur
\item Le TPE signe un devis et l'envoie à la carte
\item La carte vérifie la signature du TPE, signé à son tour le devis et le renvoie sous forme de facture au TPE
\item Le TPE vérifie la signature du client et envoie cette facture à la banque.
\item la banque à son tour vérifie les deux signatures, l'existence des comptes respectif ainsi que la solvabilité du client. Elle effectue alors la transaction financière et avertit le TPE et le client.
\end{itemize}
Cependant un problème compatibilité de format du stockage des clefs entre la BasicCard et Java ne nous pas permis d'effectuer la vérification de la signature de la carte. La clef de BasicCard est dans un format BER-TLV et nous avons essayé de la convertir en DER dans le programme JAVA et puis ensuite à l'aide d'openssl. Malheureusement ces deux essais n'ont pas fonctionné.

A cause de ces multiples difficultés rencontré nous n'avons pas pu aboutir la programmation du serveur. Nous voulions réutiliser le code JAVA de l'applet pour les transformer en servlet. Ceci nous aurait permis d'envoyer la facture dans une requête https et de reconstruire notre objet ensuite.
